সি প্রোগ্রামিং এ যেহেতু এরর হ্যান্ডেলিং(error handling) এর সরাসরি কোনো সাপোর্ট নাই, কিন্তু সিস্টেম প্রোগ্রামিং ল্যাংগুয়েজ হওয়ায় ইহা রিটার্ন ভ্যালুর উপর ভিত্তিকরে lower level এ এক্সেস সরবরাহ করে।
যেকোনো error এর জন্য অধিকাংশ সি অথবা এমনকি ইউনিক্স ফাংশন কল(call) এর ক্ষেত্রেও -1 অথবা NULL রিটার্ন করে এরর কোড হিসাবে errno সেট করে। ইহা গ্লোবাল ভ্যারিয়েবল হিসাবে সেট হয় এবং এই সংকেত দেয় যে, ফাংশন কল করার সময় এরর সংঘটিত হয়েছে।
আপনি বিভিন্ন ধরনের এরর কোড দেখে থাকতে পারেন যা <errno.h> হেডার ফাইলে ডিফাইন্ড করা আছে।
সুতরাং একজন সি প্রোগ্রামার রিটার্ন ভ্যালু চেক করতে পারে এবং রিটার্ন ভ্যালুর উপর ভিত্তিকরে উপযুক্ত কাজটি করতে সক্ষম হয়।
প্রোগ্রাম ইনিশিয়ালাইজিং(initializing) এর সময় errno এর ভ্যালু 0(zero) সেট করা খুবই ভাল। ভ্যালু 0 ইঙ্গিত দেয় যে, প্রোগ্রামে কোনো এরর নাই।
সি errno, perror() এবং strerror() ফাংশন
সি প্রোগ্রামিং ল্যাংগুয়েজ perror() এবং strerror() দুটি ফাংশন সরবরাহ করে যার মাধ্যমে errno এর সাথে সম্পর্কযুক্ত টেক্সট মেসেজ প্রদর্শন করানো যেতে পারে।
perror()ফাংশনটি , এর মধ্য দিয়ে যে স্ট্রিং অতিক্রম করানো হয় তা, এরপরে কোলন(:) এবংerrnoএর চলমান ভ্যালুর জন্য পাঠ্য উপস্থাপনা(textual representation)-কে প্রদর্শন করায়।strerror()ফাংশনটিerrnoএর চলমান ভ্যালুর পাঠ্য উপস্থাপনা(textual representation) এর পয়েন্টার রিটার্ন করে।
চলুন, বিদ্যমান নাই এমন একটি ফাইল খোলার(open) চেষ্টা করি এবং এর মাধ্যমে একটি ত্রুটির(error) সৃষ্টি করি। ব্যবহার দেখানোর জন্য এখানে আমরা উভয় ফাংশন-ই ব্যবহার করেছি।
কিন্তু আপনি ত্রুটি দেখানোর জন্য আপনার পছন্দমত এক বা তার অধিক পদ্ধতি ব্যবহার করতে পারেন। দ্বিতীয় গুরুত্বপূর্ণ বিষয় হলো ফাইল প্রবাহের(stream) সমস্ত ত্রুটিসমূহের(errors) আউটপুট নেওয়ার জন্য stderr ব্যবহার করা উচিৎ।
উদাহারন ১:
kt_satt_skill_example_id=654
0(শূন্য) দিয়ে ভাগের ফলে উৎপন্ন Error
প্রায় সময়েই প্রোগ্রামাররা কোনো সংখ্যাকে ভাগ করার সময় ভাজক শূন্য কিনা চেক করে দেখে না যা পরিশেষে রান টাইম এরর(runtime error) উৎপন্ন করে।
নিচের প্রোগ্রামে ভাগ করার পূর্বে ভাজক 0(শূন্য) কিনা চেক করার মাধ্যমে এই সমস্যার সমাধান দেখানো হলোঃ
উদাহারন ২:
kt_satt_skill_example_id=658
প্রোগ্রাম থেকে বের হওয়ার স্ট্যাটাস
প্রোগ্রামের কাজ সফলভাবে সম্পন্ন হওয়ার পরে প্রোগ্রাম থেকে সচারচর EXIT_SUCCESS এর স্ট্যাটাস ভ্যালু নিয়ে বের হয়। এখানে EXIT_SUCCESS হলো ম্যাক্রো এবং ইহাকে 0 দ্বারা সঙ্গায়িত করা হয়।
আপনার প্রোগ্রামে যদি কোনো এরর(error) থাকে এবং আপনি যদি প্রোগ্রাম থেকে বের হতে চান তাহলে EXIT_FAILURE স্ট্যাটাস নিয়ে আপনাকে প্রোগ্রাম থেকে বের হতে হবে যাকে -1 দ্বারা সঙ্গায়িত করা হয়।
সুতরাং চলুন উপরের প্রোগ্রামকে নিচের মত করে লিখিঃ
kt_satt_skill_example_id=659
Read more